CREATE PROC [dbo].[Cash_SaveMultilplePrescription] @MultipleUserId SMALLINT
AS
BEGIN
    DECLARE @IsCashPayment BIT = 1,
            @ResultNo NUMERIC(18, 0),
            @PrescriptionId NUMERIC(18, 0),
            @KindSave SMALLINT,
            @ResultMessage NVARCHAR(MAX),
            @PrescriptionNumber VARCHAR(8),
            @PrescriptionType SMALLINT;
    DECLARE @PrescriptionResult TABLE
    (
        PrescriptionId NUMERIC(18, 0),
        PrescriptionType SMALLINT,
        KindSave SMALLINT,
        Result NUMERIC(18, 0),
        ResultMessage NVARCHAR(MAX)
    );

    DECLARE MultilplePrescriptionCursor CURSOR FOR
    SELECT Id_Havaleh,
           Nu_Forosh,
           Kind_Flag,
           kind_Save
    FROM dbo.TmpDrugH
    WHERE kind_Save IN ( 2, 3 )
          AND MultipleFactorUserId = @MultipleUserId
    ORDER BY Id_Havaleh;
    OPEN MultilplePrescriptionCursor;
    FETCH NEXT FROM MultilplePrescriptionCursor
    INTO @PrescriptionId,
         @PrescriptionNumber,
         @PrescriptionType,
         @KindSave;
    BEGIN TRY
        BEGIN TRAN;
        WHILE @@FETCH_STATUS = 0
        BEGIN
            EXEC dbo.Sodor_Factor_Drug @Msg_Num = @ResultNo OUTPUT,
                                       @TmpId = @PrescriptionId; -- numeric(18, 0)
            IF @ResultNo = -1
                SET @ResultMessage
                    = ' ǘ  : ' + @PrescriptionNumber + '    ǘ  ';
            ELSE IF @ResultNo = -2
                SET @ResultMessage
                    = ' ǘ  : ' + @PrescriptionNumber
                      + '      ǘ         ';
            ELSE IF @ResultNo = -3
                SET @ResultMessage
                    = ' ǘ  : ' + @PrescriptionNumber
                      + '            ';
            ELSE IF @ResultNo = -6
                SET @ResultMessage
                    = ' ǘ  : ' + @PrescriptionNumber + '          ';
            ELSE IF @ResultNo = 0
                    OR @ResultNo = -5
                SET @ResultMessage = ' :     ǘ ' + @PrescriptionNumber;
            ELSE
                SET @ResultMessage = '    ';
            INSERT INTO @PrescriptionResult
            VALUES
            (@PrescriptionId, @PrescriptionType, @KindSave, @ResultNo, @ResultMessage);
            IF @ResultNo <= 0
            BEGIN
                DELETE FROM @PrescriptionResult
                WHERE @ResultNo > 0;
                RAISERROR('Error raised in Save Prscription .', 16, 1);
            END;
            FETCH NEXT FROM MultilplePrescriptionCursor
            INTO @PrescriptionId,
                 @PrescriptionNumber,
                 @PrescriptionType,
                 @KindSave;
        END;
        CLOSE MultilplePrescriptionCursor;
        DEALLOCATE MultilplePrescriptionCursor;
        COMMIT TRAN;

    END TRY
    BEGIN CATCH
        CLOSE MultilplePrescriptionCursor;
        DEALLOCATE MultilplePrescriptionCursor;
        ROLLBACK TRAN;
    END CATCH;

    SELECT PrescriptionId,
           PrescriptionType,
           KindSave,
           Result,
           ResultMessage,
		   dh.Sazman_Code InsuranceCode , 
           PrescriptionNumber = CASE
                                    WHEN pr.PrescriptionType = 1 THEN
                                        dh.Nu_Forosh
                                    ELSE
                                        dh.Nu_Bargasht_Forosh
                                END
    FROM @PrescriptionResult pr
        LEFT JOIN dbo.DrugH dh
            ON dh.Id_Havaleh = pr.Result
    ORDER BY dh.Id_Havaleh;
END
